/* 该文件用于创建Vuex中最核心的store对象 */
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

//准好一个actions，用于：响应组件里的“动作”
const actions = {
	//jia这个“服务员”,没有存在的意义，因为里面没有业务逻辑
	/* jia(miniStore,value){
		console.log('actions中的jia函数被调用了',value)
		miniStore.commit('JIA',value)
	},*/
	
	//jian这个“服务员”,没有存在的意义，因为里面没有业务逻辑
	/*jian(miniStore,value){
		console.log('actions中的jian函数被调用了',value)
		miniStore.commit('JIAN',value)
	} */

	//jiaOdd这个“服务员”,有存在的意义，因为里面有业务逻辑（判断奇偶数）
	jiaOdd(miniStore,value){
		console.log('actions中的jiaOdd函数被调用了')
		if(miniStore.state.sum % 2){
			miniStore.commit('JIA',value)
		}
	},

	//jiaOdd这个“服务员”,有存在的意义，因为里面有业务逻辑（开启定时器）
	jiaWait(miniStore,value){
		console.log('actions中的jiaWait函数被调用了')
		setTimeout(()=>{
			miniStore.commit('JIA',value)
		},500)
	}

}

//准好一个mutations，用于：真正修改state中保存的数据
const mutations = {
	JIA(state,value){
		console.log('mutations中的JIA函数被调用了',state,value)
		state.sum += value
	},
	JIAN(state,value){
		console.log('mutations中的JIAN函数被调用了',state,value)
		state.sum -= value
	}
}

//准好一个state，用于：真正保存数据
const state = {
	sum:6,
	school:'尚硅谷',
	car:'奔驰c63'
}

//getters用于将state中要经过计算的数据，计算后存入$store.getters中
//类似于组件中的计算属性
const getters = {
	bigSum(state){
		return state.sum *10
	}
}

//创建一个store管理着：actions、mutations、state
const store = new Vuex.Store({
	actions,
	mutations,
	state,
	getters
})

export default store